public class HandlerMethod
extends java.lang.Object
The class may be created with a bean instance or with a bean name
(e.g. lazy-init bean, prototype bean). Use createWithResolvedBean()
to obtain a HandlerMethod
instance with a bean instance resolved
through the associated BeanFactory
.
Modifier and Type | Class and Description |
---|---|
protected class |
HandlerMethod.HandlerMethodParameter
A MethodParameter with HandlerMethod-specific behavior.
|
private class |
HandlerMethod.ReturnValueMethodParameter
A MethodParameter for a HandlerMethod return type based on an actual return value.
|
Modifier and Type | Field and Description |
---|---|
private java.lang.Object |
bean |
private BeanFactory |
beanFactory |
private java.lang.Class<?> |
beanType |
private java.lang.reflect.Method |
bridgedMethod |
protected Log |
logger
Logger that is available to subclasses
|
private java.lang.reflect.Method |
method |
private MethodParameter[] |
parameters |
private HandlerMethod |
resolvedFromHandlerMethod |
private HttpStatus |
responseStatus |
private java.lang.String |
responseStatusReason |
Modifier | Constructor and Description |
---|---|
protected |
HandlerMethod(HandlerMethod handlerMethod)
Copy constructor for use in subclasses.
|
private |
HandlerMethod(HandlerMethod handlerMethod,
java.lang.Object handler)
Re-create HandlerMethod with the resolved handler.
|
|
HandlerMethod(java.lang.Object bean,
java.lang.reflect.Method method)
Create an instance from a bean instance and a method.
|
|
HandlerMethod(java.lang.Object bean,
java.lang.String methodName,
java.lang.Class<?>... parameterTypes)
Create an instance from a bean instance, method name, and parameter types.
|
|
HandlerMethod(java.lang.String beanName,
BeanFactory beanFactory,
java.lang.reflect.Method method)
Create an instance from a bean name, a method, and a
BeanFactory . |
Modifier and Type | Method and Description |
---|---|
HandlerMethod |
createWithResolvedBean()
If the provided instance contains a bean name rather than an object instance,
the bean name is resolved before a
HandlerMethod is created and returned. |
boolean |
equals(java.lang.Object other) |
private void |
evaluateResponseStatus() |
java.lang.Object |
getBean()
Return the bean for this handler method.
|
java.lang.Class<?> |
getBeanType()
This method returns the type of the handler for this handler method.
|
protected java.lang.reflect.Method |
getBridgedMethod()
If the bean method is a bridge method, this method returns the bridged
(user-defined) method.
|
java.lang.reflect.Method |
getMethod()
Return the method for this handler method.
|
<A extends java.lang.annotation.Annotation> |
getMethodAnnotation(java.lang.Class<A> annotationType)
Return a single annotation on the underlying method traversing its super methods
if no annotation can be found on the given method itself.
|
MethodParameter[] |
getMethodParameters()
Return the method parameters for this handler method.
|
HandlerMethod |
getResolvedFromHandlerMethod()
Return the HandlerMethod from which this HandlerMethod instance was
resolved via
createWithResolvedBean() . |
protected HttpStatus |
getResponseStatus()
Return the specified response status, if any.
|
protected java.lang.String |
getResponseStatusReason()
Return the associated response status reason, if any.
|
MethodParameter |
getReturnType()
Return the HandlerMethod return type.
|
MethodParameter |
getReturnValueType(java.lang.Object returnValue)
Return the actual return value type.
|
java.lang.String |
getShortLogMessage()
Return a short representation of this handler method for log message purposes.
|
int |
hashCode() |
<A extends java.lang.annotation.Annotation> |
hasMethodAnnotation(java.lang.Class<A> annotationType)
Return whether the parameter is declared with the given annotation type.
|
private MethodParameter[] |
initMethodParameters() |
boolean |
isVoid()
Return
true if the method return type is void, false otherwise. |
java.lang.String |
toString() |
protected final Log logger
private final java.lang.Object bean
@Nullable private final BeanFactory beanFactory
private final java.lang.Class<?> beanType
private final java.lang.reflect.Method method
private final java.lang.reflect.Method bridgedMethod
private final MethodParameter[] parameters
@Nullable private HttpStatus responseStatus
@Nullable private java.lang.String responseStatusReason
@Nullable private HandlerMethod resolvedFromHandlerMethod
public HandlerMethod(java.lang.Object bean, java.lang.reflect.Method method)
public HandlerMethod(java.lang.Object bean, java.lang.String methodName, java.lang.Class<?>... parameterTypes) throws java.lang.NoSuchMethodException
java.lang.NoSuchMethodException
- when the method cannot be foundpublic HandlerMethod(java.lang.String beanName, BeanFactory beanFactory, java.lang.reflect.Method method)
BeanFactory
.
The method createWithResolvedBean()
may be used later to
re-create the HandlerMethod
with an initialized bean.protected HandlerMethod(HandlerMethod handlerMethod)
private HandlerMethod(HandlerMethod handlerMethod, java.lang.Object handler)
private MethodParameter[] initMethodParameters()
private void evaluateResponseStatus()
public java.lang.Object getBean()
public java.lang.reflect.Method getMethod()
public java.lang.Class<?> getBeanType()
Note that if the bean type is a CGLIB-generated class, the original user-defined class is returned.
protected java.lang.reflect.Method getBridgedMethod()
getMethod()
.public MethodParameter[] getMethodParameters()
@Nullable protected HttpStatus getResponseStatus()
ResponseStatus.code()
@Nullable protected java.lang.String getResponseStatusReason()
ResponseStatus.reason()
public MethodParameter getReturnType()
public MethodParameter getReturnValueType(@Nullable java.lang.Object returnValue)
public boolean isVoid()
true
if the method return type is void, false
otherwise.@Nullable public <A extends java.lang.annotation.Annotation> A getMethodAnnotation(java.lang.Class<A> annotationType)
Also supports merged composed annotations with attribute overrides as of Spring Framework 4.2.2.
annotationType
- the type of annotation to introspect the method fornull
if none foundAnnotatedElementUtils.findMergedAnnotation(java.lang.reflect.AnnotatedElement, java.lang.Class<A>)
public <A extends java.lang.annotation.Annotation> boolean hasMethodAnnotation(java.lang.Class<A> annotationType)
annotationType
- the annotation type to look forAnnotatedElementUtils.hasAnnotation(java.lang.reflect.AnnotatedElement, java.lang.Class<? extends java.lang.annotation.Annotation>)
@Nullable public HandlerMethod getResolvedFromHandlerMethod()
createWithResolvedBean()
.public HandlerMethod createWithResolvedBean()
HandlerMethod
is created and returned.public java.lang.String getShortLogMessage()
public boolean equals(java.lang.Object other)
equals
in class java.lang.Object
public int hashCode()
hashCode
in class java.lang.Object
public java.lang.String toString()
toString
in class java.lang.Object